package q617_mergeTrees;

import CommonClass.Common.TreeNode;
public class Solution_1 {

    /**
     * 最简单的迭代
     */
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        // 首先判断是否两者都是空 如果是则直接返回
        if (root1 == null && root2 == null) {
            return null;
        }

        // 至此说明至少有一个不为空
        // 这里的思路是 我们以root1为主树 root2为辅树
        // 最终所有的结果都返回root1即可
        if (root1 != null) {
            // 如果root1非空，那么有两种情况
            // 1 root2也非空，那么root1的值为两者只和，然后递归两者的子节点
            // 2 root2为空 那么不需要任何操作 只需要返回root1 空的root2不会对root1产生任何影响
            if (root2 != null) {
                root1.val = root1.val + root2.val;

                root1.left = mergeTrees(root1.left, root2.left);
                root1.right = mergeTrees(root1.right, root2.right);
            }
        }else {
            // 否则就是root1为空，那么此时只需要将root2嫁接到root1上面即可
            root1 = root2;
        }
        return root1;
    }
}
